﻿Public Class xtf_ABMasiento

    Dim ulg_row As DataRow
    Dim obj_asiento As cls_asiento_ = Nothing

    Public Sub New()
        InitializeComponent()
        Cargarasientoconcepto_()
        Cargartipoimporte_()
        AgregarValidaciones()
    End Sub

    Public Overrides Sub CargarObjetos()
        Cargarasientoconcepto_()
        Cargartipoimporte_()
    End Sub

    Private Sub Cargarasientoconcepto_()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_asientoconcepto.EditValue

        Dim asientoconcepto_ As New cls_asientoconcepto_
        asientoconcepto_.CargarTodos()
        cargarCombo(cbo_asientoconcepto, asientoconcepto_.Items)

        cbo_asientoconcepto.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_asientoconcepto.EditValue)
    End Sub

  Private Sub Cargartipoimporte_()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_tipoimporte.EditValue

        cargarCombo(cbo_tipoimporte, GetType(cls_asiento_.enu_tipoimporte))
        cbo_tipoimporte.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_tipoimporte.EditValue)
    End Sub


    Public Shadows Sub Nuevo(ByRef listado As Form, ByRef prm_idtercero As Integer)
        Try
            frm_listado = listado
            Me.Text = "Asiento - Nuevo"
            dtp_fecha.DateTime = Now
            obj_asiento = New cls_asiento_
            obj_asiento.idtercero = prm_idtercero
            obj_asiento.tipo = cls_documento_.enu_tipodocumento.Manual
            btn_Registro.Enabled = False

            dte_vencimiento.DateTime = Now
            dte_vencimientoRE.DateTime = Now
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef asiento As cls_asiento_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_asiento) Then
            obj_asiento = New cls_asiento_
        End If
        obj_asiento = asiento
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = "Asiento - " & obj_asiento.ToString
        txt_ID.Text = obj_asiento.idasiento
        dtp_fecha.DateTime = obj_asiento.fecha.ToShortDateString
        cbo_asientoconcepto.EditValue = obj_asiento.idasientoconcepto
        cbo_tipoimporte.EditValue = obj_asiento.tipoimporte
        txt_importe.Text = obj_asiento.importe
        txt_observaciones.Text = obj_asiento.observaciones

        dte_vencimiento.DateTime = obj_asiento.vencimiento
        dte_vencimientoRE.DateTime = obj_asiento.vencimientoRE
        dte_vencimiento.Properties.ReadOnly = True

        If Not IsNothing(asiento.documento) Then
            txt_documento.Text = Format(asiento.documento.numero, "0000000000")
            txt_documento.Tag = asiento.documento
        End If

        btn_Registro.Enabled = True

        If asiento.tipo <> cls_documento_.enu_tipodocumento.Manual Then
            dtp_fecha.Properties.ReadOnly = True
            cbo_asientoconcepto.Properties.ReadOnly = True
            cbo_tipoimporte.Properties.ReadOnly = True
            txt_importe.Properties.ReadOnly = True
        End If

        obj_asiento.tercero = Nothing

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean
        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then

            obj_asiento.fecha = dtp_fecha.DateTime.Date
            obj_asiento.idasientoconcepto = cbo_asientoconcepto.EditValue
            obj_asiento.tipoimporte = cbo_tipoimporte.EditValue
            obj_asiento.importe = txt_importe.Text
            obj_asiento.observaciones = txt_observaciones.Text

            obj_asiento.vencimiento = dte_vencimiento.DateTime
            obj_asiento.vencimientoRE = dte_vencimientoRE.DateTime

            If txt_ID.Text = "" Then
                obj_asiento.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_ABMasiento_).AgregarItem(obj_asiento)
                End If
                Modificar(obj_asiento, frm_listado, ulg_row)
            Else
                obj_asiento.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_ABMasiento_).ModificarItem(obj_asiento, ulg_row)
                End If
                Modificar(obj_asiento, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_asiento.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_asiento.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub


    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

   
End Class